package cz.vse.adventura.po1715.xskrz00_skrivankova.hra;

import static cz.vse.adventura.po1715.xskrz00_skrivankova.hra.Texty.*;
import static cz.vse.adventura.po1715.xskrz00_skrivankova.hra.Stav.*;

/*******************************************************************************
 * Instance tridy {@code PříkazPřemýšlej} představuje příkaz, který nám umožní snít poživatelné předměty.
 *
 * @author    Zuzana SKŘIVÁNKOVÁ
 * @version   1.00
 */
public class PříkazSněz extends APříkaz
{
//== KONSTANTNI ATRIBUTY TRIDY =================================================
//== PROMENNE ATRIBUTY TRIDY ===================================================
//== KONSTANTNI ATRIBUTY INSTANCI ==============================================
//== PROMENNE ATRIBUTY INSTANCI ================================================
//== NESOUKROME METODY TRIDY ===================================================

//##############################################################################
//== KONSTRUKTORY A TOVARNI METODY =============================================

    /***************************************************************************
     * Vytvoří příkaz, jenž po zadání vypíše hráči nápovědu k dané místnosti.
     */
    PříkazSněz()
    {
        super(Texty.pSNĚZ,
              "Slouží k snězení nebo k vypití něčeho vhodného." );
    }


//== ABSTRAKTNI METODY =========================================================
//== NESOUKROME METODY INSTANCI ================================================

    /***************************************************************************
     * Po zadání příkazu sněz se zkontroluje, zda je v batůžku předmět uvedený
     * v prvním parametru a Alenka je tedy schopná předmět sníst nebo případně
     * vypít. Musí to být jeden ze tří předmětů, ktreré se ve hře dají požít.
     * Steak, dortík nebo lahvička.
     *
     *
     * Vypíše nápovědu hráči k aktuální místnosti
     *
     * @param  parametry Nepouzite parametry prikazu
     * @return Nápověda k dané místnosti
     */
    @Override
    public String execute( String... parametry )
    {
        
        if (parametry.length != 1) {
            return "Příkaz potřebuje jeden parametr:\n" +
                   "předmět k jídlu či vypití" ;
        }
        
        String nazev = parametry[0];
        Batoh batoh = Hra_Alenka.getHra().getBag();
        Předmět  predmet = (Předmět)Utility.najdi(nazev, batoh.getObjects());
        
        
        
        if (predmet != null) {
            
            if (predmet.isJedlý()) {
                
                //Alenka se zvětšuje
                if (nazev.equalsIgnoreCase(oLAHVIČKA)) {
                    if (sALENKA_ZMENSENA) {
                        sALENKA_ZMENSENA = false;
                        return rALENKA_NORMALNI;
                    } else if(sALENKA_ZVETSENA) {
                        //Větší už být nemůže
                        return rALENKA_ZVETSENA_ZVETSENA;
                    } else {
                        //Vyroste
                        sALENKA_ZVETSENA = true;
                        return rALENKA_ZVETSENA;
                    }
                }
                
                //Alenka se zmenšuje
                if (nazev.equalsIgnoreCase(oDORTÍK)) {
                    if (sALENKA_ZMENSENA) {
                        //Menší už být nemůže
                        return rALENKA_ZMENSENA_ZMENSENA;
                    } else if(sALENKA_ZVETSENA) {
                        sALENKA_ZVETSENA = false;
                        return rALENKA_NORMALNI;
                    } else {
                        //Zmenší se
                        sALENKA_ZMENSENA = true;
                        return rALENKA_ZMENSENA;
                    }
                }
                
                batoh.vyjmi(nazev);
                return "Mňam to byla bašta!";
                
            } else {
                return "Tohle by nesnědli ani ve Faktoru strachu!";
            }
            
            
        } else {
              return "Můžete sníst/vypít pouze předmět, který máte v batohu.";
        }    
        
    }



//== SOUKROME A POMOCNE METODY TRIDY ===========================================
//== SOUKROME A POMOCNE METODY INSTANCI ========================================
//== VNORENE A VNITRNI TRIDY ===================================================
//== TESTY A METODA MAIN =======================================================
}
